|
Date : 14 mars 1993 Protection : MOT DE PASSE Programme : SNOOKER Outils : SOFT-ICE V2.50a Fichier : Lan�eur.com Temps pass� : 1 HEURE environ... Soci�t� : VIRGIN GAMES Divers : Compact� par RNC Origine : L.F. Num�ro : 208 Le CALL qui prend les caract�res se trouve en CS:07F9 et le CALL du test se trouve en CS:0801. Si � l'issu de ce test le flag Z est positionn� on passe la demande du code. CS=185C CS:07F9 E826FE CALL 0622 ; PREND LES CHAR. CS:07FC 832EFA9001 SUB WORD PTR [90FA],+01 CS:0801 E8B501 CALL 09B9 ; TEST LA REPONSE... CS:0804 7459 JZ 085F ; SAUT SI OK. CS:0806 B80100 MOV AX,0001 Dans le CALL 09B9 on voit que les caract�res transitent par la position m�moire: DS:90B7. CS:09BE 800019 ADD BYTE PTR [BX+SI],19 DS:90B7 = 41 41 = 'A': J'avais tap� une suite de A. Apr�s moulte d�roulement de cette routine je m'aper�ois qu'en CS:09EC DX doit �tre �gal au contenu de SI+4A pour positionner le flag Z. CS:09E9 895442 MOV [SI+42],DX ; ICI IL FAUT QUE CS:09EC 2B544A SUB DX,[SI+4A] ; DX = [SI+4A].... CS:09EF 7506 JNZ 09F7 ; SI PAS 0, CODE NOK. CS:09F1 C706F8900000 MOV WORD PTR [90F8],0000 CS:09F7 89540A MOV [SI+0A],DX La solution est de substituer au saut un XOR DX,DX pour mettre � la fois 0 dans DX et positionner du m�me coup le flag 0. Le saut est supprim� du m�me coup ! D'une pierre trois coups. Par contre c'est la croix et le drapeau pour trouver le bon segment. Je n'ai jamais autant gal�r�. En utilisant mon programme DEBUG qui me permet grace au port imprimante de surveiller n'importe quel byte situ� dans le mappage m�moire ou IO je vois que le 75 en CS:09EF est bien l� longtemps avant la demande du code. Alors quoi ! Je n'arrive pas � y acc�der avec mes 30 d�pilages. En fait je m'aper�ois que le programme effectue des op�rations sur la pile dans ce coin l�. Je d�cide donc de fouiller plus bas: je place 255 dans la variable de d�pilage et cela fonctionne enfin ! Je r�essaye deux trois coup pour "cibler" un peu mieux le nombre de d�pilage. Et finalement je trouve qu'il n'en faut pas moins de 128 ! ; PATCH POUR LE PROGRAMME SNOOKER ; DETOURNEMENT DE L'INT 21 sf 35 ; c'est elle qui �tait le plus pr�s ! ; ;****************************************************************************** ; ZONE A INITIALISER adr_ip1 equ 09EFh ; Adresse dont le contenu est � modifier. ; Adresse directe. anc_val equ 675h ; Valeur d'origine � rechercher, invers�e. nouv_val equ 0D233h ; Nouvelle valeur invers�e: 33D2 --> XOR DX,DX INT_DET equ 21h ; Le num�ro de l'INT que l'on veut utiliser. sous_fonc equ 35h ; La sous-fonction utilis�e. nb equ 080h ; Nombre de d�pilage. BEEP_TONE equ 440 ; Fr�quence de la note. ;****************************************************************************** ; Le reste du lan�eur est identique � tous les autres. FREDDY |